// pages/partner/person/person.js
const app = getApp();
var bankNumberRegex = /^([1-9]{1})(\d{14}|\d{15}|\d{18})$/; //银行卡号的正则表达式
var phRegex = /^1[3456789]\d{9}$/; //电话号码的正则
var sfRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; //身份证
import request from '../../../utils/http.js'
Page({

  /**
   * 页面的初始数据
   */
  data: {

    personId: 0,
    dianPuId: 0,

    shouKuanRen: '',
    shouKuanShouJiHao: '',
    shouKuanShenFenZhengHao: '',
    shouKuanShenFenZhengZuZhi:'',
    kaihuhangH: '',
    kaihuhangF: '',
    kaihuhangZ: '',

    shouKuanYinHangKaHao: '',
    shouKuanYinHangKaiHuHang: '',
    kaihuhangArray: [], //开户行省市区

    phone: '',
    yanzm: '',
    hiddenYanzm: false, //验证码
    countDownNum: 60, //验证码间隔
    timer: 0, //定时器
    sendFlag: false,
    token: '',
    ifDaShi:false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      phone: wx.getStorageSync(app.globalData.PHONENUMBER),
      token: wx.getStorageSync('token'),
      dianPuId:wx.getStorageSync(app.globalData.SHOPID),
    })
  },

  onShow: function () {
    this.setData({
      personId: wx.getStorageSync(app.globalData.PERSON_ID),
    })
    this.getYinhangData();
  },

  //获取页面数据
  getYinhangData: function () {
    var that = this
    let data = {
      dianPuId: that.data.dianPuId,
    }

    request.get('person/getShenFenYinHangKa2', data, res => {
      console.log("银行卡信息:" + JSON.stringify(res.data))

      that.setData({
        shouKuanRen: res.data.shouKuanRen,
        shouKuanShouJiHao: res.data.shouKuanShouJiHao,
        shouKuanShenFenZhengHao: res.data.shouKuanShenFenZhengHao,
        shouKuanShenFenZhengZuZhi:res.data.shouKuanShenFenZhengZuZhi,
        shouKuanYinHangKaHao: res.data.shouKuanYinHangKaHao,
        shouKuanYinHangKaiHuDiZhi: res.data.shouKuanYinHangKaiHuDiZhi,
        kaihuhangH: res.data.shouKuanYinHangKaiHuHang == null ? '' : res.data.shouKuanYinHangKaiHuHang.split(",")[0],
        kaihuhangF: res.data.shouKuanYinHangKaiHuHang == null ? '' : res.data.shouKuanYinHangKaiHuHang.split(",")[1],
        kaihuhangZ: res.data.shouKuanYinHangKaiHuHang == null ? '' : res.data.shouKuanYinHangKaiHuHang.split(",")[2],
        shouKuanYinHangKaiHuHang: res.data.shouKuanYinHangKaiHuHang,
      })

    })
  },

  //姓名
  bindNameInput: function (e) {
    this.setData({
      shouKuanRen: e.detail.value
    })
  },


  //手机号
  bindPhoneInput: function (e) {
    this.setData({
      shouKuanShouJiHao: e.detail.value
    })
  },

  //身份证号
  bindIdcardInput: function (e) {
    this.setData({
      shouKuanShenFenZhengHao: e.detail.value
    })
  },

    //身份证地址
    bindShouKuanShenFenZhengZuZhiInput: function (e) {
      this.setData({
        shouKuanShenFenZhengZuZhi: e.detail.value
      })
    },

  //银行卡号
  bindBankCardInput: function (e) {
    this.setData({
      shouKuanYinHangKaHao: e.detail.value
    })
  },

  //开户行省市区
  bindKaihuhangChange: function (e) {
    this.setData({
      kaihuhangArray: e.detail.value,
      kaihuhangLength: e.detail.value.length
    })

  },

  //开户行
  bindBankOpenHInput: function (e) {
    this.setData({
      kaihuhangH: e.detail.value
    })
  },

  //分行
  bindBankOpenFInput: function (e) {
    this.setData({
      kaihuhangF: e.detail.value
    })
  },

  //开户行Z
  bindBankOpenZInput: function (e) {
    this.setData({
      kaihuhangZ: e.detail.value
    })
  },

  //设置身份证正面照
  bindIdcardFront: function () {
    var that = this
    wx.showActionSheet({
      itemList: ['拍照', '从相册选择'],
      success: function (res) {
        //拍照
        if (res.tapIndex == 0) {
          that.openCamera(0)
        } else if (res.tapIndex == 1) {
          //从相册选择
          that.openPhoto(0)
        }
      }
    })
  },

  //设置身份证反面照
  bindIdcardBack: function () {
    var that = this
    wx.showActionSheet({
      itemList: ['拍照', '从相册选择'],
      success: function (res) {
        //拍照
        if (res.tapIndex == 0) {
          that.openCamera(1)
        } else if (res.tapIndex == 1) {
          //从相册选择
          that.openPhoto(1)
        }
      }
    })
  },

  //设置银行卡正面照
  bindBankFront: function () {
    var that = this
    wx.showActionSheet({
      itemList: ['拍照', '从相册选择'],
      success: function (res) {
        //拍照
        if (res.tapIndex == 0) {
          that.openCamera(2)
        } else if (res.tapIndex == 1) {
          //从相册选择
          that.openPhoto(2)
        }
      }
    })
  },

  //设置银行卡背面照
  bindBankBack: function () {
    var that = this
    wx.showActionSheet({
      itemList: ['拍照', '从相册选择'],
      success: function (res) {
        //拍照
        if (res.tapIndex == 0) {
          that.openCamera(3)
        } else if (res.tapIndex == 1) {
          //从相册选择
          that.openPhoto(3)
        }
      }
    })
  },

  /**
   * 打开照相机
   */
  openCamera: function (type) {
    var that = this
    wx.chooseImage({
      count: 1,
      sizeType: ["compressed"],
      sourceType: ["camera"],
      success: function (res) {
        var filePath = res.tempFilePaths[0]
        that.uploadToQiniu(type, filePath)
      },
    })
  },

  /**
   * 从相册选择
   */
  openPhoto: function (type) {
    var that = this
    wx.chooseImage({
      count: 1,
      sizeType: ["compressed"],
      sourceType: ["album"],
      success: function (res) {
        var filePath = res.tempFilePaths[0]
        that.uploadToQiniu(type, filePath)
      },
    })
  },

  /**
   * 上传图片到七牛
   */
  uploadToQiniu: function (type, filePath) {
    wx.showLoading({
      title: '上传中...',
      mask: true
    })
    var that = this
    wx.request({
      url: app.globalData.base_url + 'resource/getQiNiuToken',
      success: function (res) {

        // console.log("res.data.uptoken:" + res.data.uptoken),
        // console.log("res.data.key:" + res.data.key)
        wx.uploadFile({
          url: 'https://up-z1.qbox.me', //七牛云存储华东地区
          filePath: filePath,
          name: 'file',
          formData: {
            token: res.data.uptoken,
            key: res.data.key
          },
          success: function (res) {
            // console.log("imageUrl:res.data:" + res.data)
            var dataObject = JSON.parse(res.data);
            var imageUrl = app.globalData.base_qiniu_url + dataObject.key;
            // console.log("imageUrl:" + imageUrl)
            if (type == 0) { //身份证正面照
              that.setData({
                shouKuanShenFenZhengImageUp: imageUrl
              })
            } else if (type == 1) { //身份证背面照
              that.setData({
                shouKuanShenFenZhengImageDown: imageUrl
              })
            } else if (type == 2) { //银行卡正面照
              that.setData({
                shouKuanYinHangKaImageUp: imageUrl
              })
            } else if (type == 3) { //银行卡背面照
              that.setData({
                shouKuanYinHangKaImageDonw: imageUrl
              })
            }
          }
        })
      },
      complete: function (res) {
        wx.hideLoading();
      }
    })
  },

  //输入验证码
  bindYzmInput: function (e) {
    var value = e.detail.value;
    this.setData({
      yanzm: value,
    })
  },

  //提交
  bindSubmitTap: function () {
    if (this.data.shouKuanRen == '' || this.data.shouKuanRen == null) {
      wx.showToast({
        title: "请输入姓名！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
    }else if (this.data.shouKuanShouJiHao.length != 11 || this.data.shouKuanShouJiHao == null) {
      // this.show('手机号码输入错误！')
      wx.showToast({
        title: "手机号码输入错误！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
    }else if (!sfRegex.test(this.data.shouKuanShenFenZhengHao)) {
      // this.show('身份证号码输入错误！')
      wx.showToast({
        title: "身份证号码输入错误！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
      
    }else if (this.data.shouKuanShenFenZhengZuZhi == '' || this.data.shouKuanShenFenZhengZuZhi == null) {
      // this.show('身份证号码输入错误！')
      wx.showToast({
        title: "身份证地址不能为空！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
    }
    // if (this.data.shouKuanShenFenZhengImageUp == '') {
    //   this.show('请上传身份证正面照！');
    //   return
    // }
    // if (this.data.shouKuanShenFenZhengImageDown == '') {
    //   this.show('请上传身份证背面照！');
    //   return
    // }
    else if (this.data.shouKuanYinHangKaHao == '' || this.data.shouKuanYinHangKaHao == null) {
      // this.show('银行卡号输入错误！')
      wx.showToast({
        title: "银行卡号输入错误！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
    }
    // if (this.data.shouKuanYinHangKaiHuDiZhi == '') {
    //   this.show("请选择开户地址省市区！")
    //   return
    // }
    else if (this.data.kaihuhangH == '' || this.data.kaihuhangH == null) {
      // this.show('请输入开户银行！');
      wx.showToast({
        title: "请输入开户银行！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
    }
   else if (this.data.kaihuhangF == '' || this.data.kaihuhangF == null) {
      // this.show('请输入开户银行分行！');
      wx.showToast({
        title: "请输入开户银行分行！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
  
    }
   else if (this.data.kaihuhangZ == '' || this.data.kaihuhangZ == null) {
      // this.show('请输入开户银行支行！');
      wx.showToast({
        title: "请输入开户银行支行！", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })

    }
    // if (this.data.shouKuanYinHangKaImageUp == '') {
    //   this.show('请上传银行卡正面照！');
    //   return
    // }
    // if (this.data.shouKuanYinHangKaImageDonw == '') {
    //   this.show('请上传银行卡背面照！');
    //   return
    // }
    // else if (this.data.kaihuhangLength > 0) {
    //   var shouKuanYinHangKaiHuDiZhiStr = this.data.kaihuhangArray[0];
    //   for (var i = 1; i < this.data.kaihuhangLength; i++) {
    //     shouKuanYinHangKaiHuDiZhiStr = shouKuanYinHangKaiHuDiZhiStr + ',' + this.data.kaihuhangArray[i]
    //   }
    //   this.setData({
    //     shouKuanYinHangKaiHuDiZhi: shouKuanYinHangKaiHuDiZhiStr
    //   })
    // }
    else{
      this.doSubmit();
    }


  },

  //提交
  doSubmit: function () {
    var that = this
    
    let data = {
      //  id: that.data.personId,
      shouKuanRen: that.data.shouKuanRen,
      shouKuanShouJiHao: that.data.shouKuanShouJiHao,
      shouKuanShenFenZhengHao: that.data.shouKuanShenFenZhengHao,
      shouKuanShenFenZhengZuZhi: that.data.shouKuanShenFenZhengZuZhi,
      // shouKuanShenFenZhengImageUp: that.data.shouKuanShenFenZhengImageUp,
      // shouKuanShenFenZhengImageDown: that.data.shouKuanShenFenZhengImageDown,
      shouKuanYinHangKaHao: that.data.shouKuanYinHangKaHao,
      // shouKuanYinHangKaiHuDiZhi: that.data.shouKuanYinHangKaiHuDiZhi,
      shouKuanYinHangKaiHuHang: that.data.kaihuhangH + ',' + that.data.kaihuhangF + ',' + that.data.kaihuhangZ,
      // shouKuanYinHangKaImageUp: that.data.shouKuanYinHangKaImageUp,
      // shouKuanYinHangKaImageDonw: that.data.shouKuanYinHangKaImageDonw,
    }
    request.get('person/updateShouKuanRenShenFenZhengYinHangKa', data, res => {

      if (res.statusCode == 401) { //token 过期
        that.setData({
          hiddenYanzm: true
        })
      } else {

        if (res.data.status == 1) {
          // that.show('提交成功！');
          wx.showToast({
            title: "提交成功！", // 提示的内容
            icon: "none", // 图标，默认success
            duration: 3000, // 提示的延迟时间，默认1500
            mask: false, // 是否显示透明蒙层，防止触摸穿透
          })

          setTimeout(function () {
            wx.navigateBack({
              delta: 1,
            })
          }, 1000)
        } else {
          wx.showToast({
            title: "处理失败，请联系技术人员", // 提示的内容
            icon: "none", // 图标，默认success
            duration: 3000, // 提示的延迟时间，默认1500
            mask: false, // 是否显示透明蒙层，防止触摸穿透
          })
        }
      }

    }, err => {
      wx.showToast({
        title: "处理失败，请联系技术人员", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
    })

  },





  //取消短信验证
  noYanzm: function () {
    this.setData({
      hiddenYanzm: false,
    })
    clearInterval(this.data.timer);
  },


  //发送验证码
  sendYzm: function () {
    let that = this;

    let data = {
      phone: that.data.phone,
    }
    request.get('resource/sendRiYingCode', data, res => {
     // console.log("respon:" + JSON.stringify(res.data))
      if (res.data.status == 1) {
        that.setData({
          sendFlag: true
        })
        let countDownNum = that.data.countDownNum; //获取倒计时初始值
        //如果将定时器设置在外面，那么用户就看不到countDownNum的数值动态变化，所以要把定时器存进data里面
        that.setData({
          timer: setInterval(function () { //这里把setInterval赋值给变量名为timer的变量
            //每隔一秒countDownNum就减一，实现同步
            countDownNum--;
            //然后把countDownNum存进data，好让用户知道时间在倒计着
            that.setData({
              countDownNum: countDownNum
            })
            //在倒计时还未到0时，这中间可以做其他的事情，按项目需求来
            if (countDownNum == 0) {
              //这里特别要注意，计时器是始终一直在走的，如果你的时间为0，那么就要关掉定时器！不然相当耗性能
              //因为timer是存在data里面的，所以在关掉时，也要在data里取出后再关闭
              that.setData({
                sendFlag: false
              })
              clearInterval(that.data.timer);
              //关闭定时器之后，可作其他处理codes go here
            }
          }, 1000)
        })

      } else if (res.data.status == 4) {
        wx.showToast({
          title: "发送验证码次数超过5次上限", // 提示的内容
          icon: "none", // 图标，默认success
          duration: 3000, // 提示的延迟时间，默认1500
          mask: false, // 是否显示透明蒙层，防止触摸穿透
        })
      } else {
        wx.showToast({
          title: "失败：服务器内部错误", // 提示的内容
          icon: "none", // 图标，默认success
          duration: 3000, // 提示的延迟时间，默认1500
          mask: false, // 是否显示透明蒙层，防止触摸穿透
        })
      }


    }, err => {
      wx.showToast({
        title: "处理失败，请联系技术人员", // 提示的内容
        icon: "none", // 图标，默认success
        duration: 3000, // 提示的延迟时间，默认1500
        mask: false, // 是否显示透明蒙层，防止触摸穿透
      })
    })


  },


  //获取最新token
  getToken: function () {
    let that = this;

    let data = {
      phone: that.data.phone,
      code: that.data.yanzm,
      dianPuId: that.data.dianPuId
    }
    request.get('resource/getRiYingTokenByPhone', data, res => {
      //console.log("获取token:" + JSON.stringify(res.data))
      var status = res.data.status
      switch (status) {
        case 1:
          wx.setStorageSync('token', res.data.message)
          that.setData({
            token: wx.getStorageSync('token'),
            hiddenYanzm:false
          })
          that.doSubmit();
          break;
        case 2:
          wx.showToast({
            title: "手机号码未注册", // 提示的内容
            icon: "none", // 图标，默认success
            duration: 3000, // 提示的延迟时间，默认1500
            mask: false, // 是否显示透明蒙层，防止触摸穿透
          })
          break;
        case 3:
          wx.showToast({
            title: "服务器内部错误!", // 提示的内容
            icon: "none", // 图标，默认success
            duration: 3000, // 提示的延迟时间，默认1500
            mask: false, // 是否显示透明蒙层，防止触摸穿透
          })
          break;
        case 4:
          wx.showToast({
            title: "验证码错误!", // 提示的内容
            icon: "none", // 图标，默认success
            duration: 3000, // 提示的延迟时间，默认1500
            mask: false, // 是否显示透明蒙层，防止触摸穿透
          })
          break;
        case 5:
          wx.showToast({
            title: "验证码过期!", // 提示的内容
            icon: "none", // 图标，默认success
            duration: 3000, // 提示的延迟时间，默认1500
            mask: false, // 是否显示透明蒙层，防止触摸穿透
          })
          break;
        default:
          wx.showToast({
            title: "处理失败，请联系技术人员!", // 提示的内容
            icon: "none", // 图标，默认success
            duration: 3000, // 提示的延迟时间，默认1500
            mask: false, // 是否显示透明蒙层，防止触摸穿透
          })
          break
      }

    })
  },

})